package cn.pkubangbang.demo.democontact;

import cn.pkubangbang.demo.democontact.interceptor.AuthenticationInterceptor;
import javax.servlet.FilterRegistration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 对web应用的定制。指定了静态资源的映射、举荐interceptor、将interceptor加入到registry中。
 * note 这个Config实现了WebMvcConfigurer接口。这个接口虽然内容复杂，但是大多有默认行为，所以只需按需覆盖。
 * @Author: zhangzhenbang@k2data.com.cn
 * @Date: 2018-08-24 16:36
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
            .addResourceLocations("classpath:/static/");
    }

    @Bean
    public AuthenticationInterceptor getAuthenticationInterceptor() {
        return new AuthenticationInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // note Interceptor 是需要Spring来管理的，所以需要使用@Bean，不可以直接new出来！
        registry.addInterceptor(this.getAuthenticationInterceptor())
            .addPathPatterns("/**")
            .excludePathPatterns("/static/**", "/login");
    }

}
